/****************************************************************************

	COPYRIGHT(C) MAXSI SOFTWARE, JONAS 'SORTIE' TERMANSEN 2008, 2009, 2010

    This file is part of Maxsi ImaginationLand.

    Maxsi ImaginationLand is free software: you can redistribute it and/or modify
    it under the terms of the GNU Lesser General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    Maxsi ImaginationLand is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU Lesser General Public License for more details.

    You should have received a copy of the GNU Lesser General Public License
    along with Maxsi ImaginationLand.  If not, see <http://www.gnu.org/licenses/>.

	*/ #include "MaxsiImaginationLandContributors.h" /*

	If you modify this file, please enter your name below and provide contact
	information in MaxsiImaginationLandContributors.h. For more information please see
	MaxsiImaginationLandContributors.h.
	
	Contributors to this file:

	- Jonas 'Sortie' Termansen
	- [your name here]


	MaxsiImaginationLand.exe
	Imaginary programming!
	
	Main.h
	Basic WIN32 functions and stuff

****************************************************************************/

#ifndef Main_H
#define Main_H

	//#define GOSH_WHY_DOESNT_THERE_EXIST_SOME_SIMPLE_GRAPH_SOFTWARE


	class MaxsiImaginationLand : public ME_Win32Entry
	{
		Declare_Class(MaxsiImaginationLand,ME_Win32Entry);

	public:
					int WINAPI			WinMain				(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow);
					BOOL				InitApplication		(HANDLE hInstance);
					BOOL				InitInstance		(HINSTANCE hInstance, INT nCmdShow);
		virtual		LRESULT APIENTRY	WindowProc			(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
					DWORD				OnThreadRegistered	(HWND hWnd);

	};

	ME_WIN32ENTRYPOINT_H(MaxsiImaginationLand);


	void Imagine();

#ifdef GOSH_WHY_DOESNT_THERE_EXIST_SOME_SIMPLE_GRAPH_SOFTWARE

	double YFunc(double X);
	double XMin();
	double XMax();
	double YMin();
	double YMax();

#else


	/*__forceinline*/ ComplexFloat Z(ComplexFloat In, ComplexFloat C);

	__forceinline unsigned int	Iterations(ComplexFloat In);
	
	void BenchMarkZ();
	void TestSlowInvSqrt();
	void TestFastInvSqrt();

#endif

#endif